package br.com.fiap.vendas.web.controller;

import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import br.com.fiap.vendas.business.delegate.ClienteDelegate;
import br.com.fiap.vendas.business.exception.ServiceException;
import br.com.fiap.vendas.business.vo.ClienteVO;

@Controller
@RequestMapping("/cliente")
public class ClienteController {

	private Logger log = Logger.getLogger(ClienteController.class);
	private ClienteDelegate delegate;

	public ClienteController() {
		if (delegate == null) {
			delegate = new ClienteDelegate();
		}
	}

	// Quando abrir url direto pelo browser redireciona para a tela de cadastro.
	@RequestMapping(method = RequestMethod.GET, value = "/inserirCliente.do")
	public String iniciarCadastro(Model request) {
		try {
			log.info("iniciando busca de produtos.");
			buscarClientes(request);
		} catch (ServiceException e) {
			request.addAttribute("mensagem", "Erro:" + e.getMessage());
		}
		return "inserirCliente";
	}

	private List<ClienteVO> buscarClientes(Model request)
			throws ServiceException {
		List<ClienteVO> clientes = delegate.listarClientes();
		log.info("clientes encontrados[." + clientes.size() + "].");
		request.addAttribute("clienteVOList", clientes);
		return clientes;
	}

	@RequestMapping(method = RequestMethod.POST, value = "/inserirCliente.do")
	public String inserirUsuario(@ModelAttribute ClienteVO clienteVO,
			Model request) {
		try {
			log.info("inserindo produto:" + clienteVO.toString());
			delegate.inserirCliente(clienteVO);
			buscarClientes(request);
		} catch (ServiceException e) {
			request.addAttribute("mensagem",
					"Ocorreu um erro ao cadastrar o cliente");
		}
		request.addAttribute("mensagem", "Cliente cadastrado com sucesso.");
		return "inserirCliente";
	}

	
	
}
